
<%@ page import="tmanager.*" %>
<%@ include file="/WEB-INF/sql.jsp" %>

<% if(session.getAttribute("tmanager.studente") == null){
      response.sendRedirect("../index.jsp");
      return;
   }
   response.setHeader("Cache-Control", "no-cache");
   response.setHeader("Pragma", "no-cache");
   response.setDateHeader("Expires", 0);

   //Recupero lo studente dalla sessione e il relatore ad esso associato
   Studente studenteSessione = (Studente) session.getAttribute("tmanager.studente");

   Professore tempProf = null;
   try{
      tempProf = getProfessoreFromDB(studenteSessione.getRelatore());
   }catch(SQLException e){
      session.setAttribute("tmanager.erroreTitolo", "Errore durante il recupero delle informazioni dello Studente");
      session.setAttribute("tmanager.erroreMessaggio", "Siamo spiacenti, ma si è verificato un errore d'accesso al database per il recupero dei dati dello Studente. Si consiglia di riprovare più tardi.");
      response.sendRedirect("../errore.jsp");
      return;
   }

   //Recupero i parametri presenti nella richiesta http
   String nome = (request.getParameter("nomeStudente") == null) ? "" : request.getParameter("nomeStudente").trim();
   String cognome = (request.getParameter("cognomeStudente") == null) ? "" : request.getParameter("cognomeStudente").trim();
   String mail = (request.getParameter("emailStudente") == null) ? "" : request.getParameter("emailStudente").trim();
   String newPwd = (request.getParameter("passwordStudente") == null) ? "" : request.getParameter("passwordStudente").trim();
   String confPwd = (request.getParameter("confPasswordStudente") == null) ? "" : request.getParameter("confPasswordStudente").trim();
   String relatore = (request.getParameter("relatoreStudente") == null) ? "" : request.getParameter("relatoreStudente").trim();
   String statoTesi = (request.getParameter("statoTesiStudente") == null) ? "" : request.getParameter("statoTesiStudente").trim();
   String titolo = (request.getParameter("titoloTesiStudente") == null) ? "" : request.getParameter("titoloTesiStudente").trim();
   String corso = (request.getParameter("corsoTesiStudente") == null) ? "" : request.getParameter("corsoTesiStudente").trim();
   String tipoTesi = (request.getParameter("tipologiaTesiStudente") == null) ? "" : request.getParameter("tipologiaTesiStudente").trim();
   String tipoLaurea = (request.getParameter("tipoLaureaStudente") == null) ? "" : request.getParameter("tipoLaureaStudente").trim();

   boolean datiModificati = false;
   boolean formValido = true;
   boolean pwdValida = true;
   boolean emailValida = true;
   
   //Determino se la mail è stata modificata e, in tal caso, se il formato è valido
   if(!mail.equals("")){
      datiModificati = !studenteSessione.getEmail().equals(mail);
      emailValida = Utility.controllaMail(mail);
   }

   //Determino se la password è stata modificata ed effettuo il controllo sulla validità
   if(!newPwd.equals("") || !confPwd.equals("")){
      datiModificati = true;
      pwdValida = Utility.controllaPassword(studenteSessione.getPassword(), newPwd, confPwd);
   }
   formValido = (emailValida && pwdValida);

   //Se ci sono modifiche ai dati dello studente e sono validi, provvedo al loro salvataggio sul database
   if(formValido && datiModificati){
      studenteSessione.setEmail(mail);
      if(!newPwd.equals("")){
         studenteSessione.setPassword(Utility.getMD5(newPwd));
      }
      try{
         updateProfiloStudente(studenteSessione);
      }catch(SQLException e){
         session.setAttribute("tmanager.erroreTitolo", "Errore durante l'aggiornamento dei dati dello Studente");
         session.setAttribute("tmanager.erroreMessaggio", "Siamo spiacenti, si è verificato un errore durante l'aggiornamento dei dati sul database. Provare ad effettuare l'operazione nuovamente.");
         response.sendRedirect("../errore.jsp");
         return;
      }
   }

%>

<%!
    static String sPassword = "I campi password e conferma password permettono la modifica della password d'accesso al sistema. Se modificati, i campi devono coincidere come valore. Si tratta di campi opzionali e la loro modifica non è richiesta.";
    static String sConfermaPassword = "Se il campo password &egrave; stato immesso, il campo conferma password permette di verificarne la correttezza.";
    static String sEmail = "Il campo Email richiede l'inserimento / aggiornamento del proprio indirizzo e-mail. &Egrave; un campo obbligatorio e deve essere correttamente formattato.";
%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>Modifica Profilo Studente</title>
      <link rel="stylesheet" type="text/css" href="../CSS/defaultStyle.css" />
   </head>
   <body>
      <%@include file="../WEB-INF/jspf/header.jspf" %>
      <script type="text/javascript" src="../Scripts/scripts.js"></script>
      <script type="text/javascript">
         
    
         function inizializza(){
            $("#riepilogoStatic").remove();
            $("#HmodificaProfilo").addClass("paginaCorrente");
            $("#emailStudente").bind("focusin",{sugg:"<%=sEmail%>"}, definisciSugg);
            $("#emailStudente").bind("focusout",{p:"emailStudente"}, verificaEMail);
            
            $("#passwordStudente").bind("focusin",{sugg:"<%=sPassword%>"}, definisciSugg);
            $("#passwordStudente").bind("focusout",rimuoviSuggGenerico);
            
            $("#confPasswordStudente").bind("focusin",{sugg:"<%=sConfermaPassword%>"}, definisciSugg);
            $("#confPasswordStudente").bind("focusout",{p:"confPasswordStudente", p2:"passwordStudente"}, passwordUguali);
                
            $("#modificaStudente").bind("click",{p:"modificaProfiloStudente"}, invia);
            $("#cancella").bind("click",pulisci);
            $("<div class=\"menuRieplogo\"><h3>Suggerimenti:</h3></div>").appendTo("#corpoDx").fadeTo(10, 0.5);
         };
         $(document).ready(inizializza);
      </script>
      <div id="corpo">
         
         
         <% if(formValido && datiModificati){%>
         <div id="corpoSx">
         <h2 class="centrato">Modifica Profilo Studente</h2>
         <div id="successoInvio">
            <p>Le informazione del profilo sono state aggiornate con successo.</p>
         </div>
         </div>
         <% }else{%>
         <div id="corpoDx">
         <div class="menuRieplogo" id="riepilogoStatic">
            <h3>Suggerimenti:</h3>
            <ul>
               <li><%=sEmail%></li>
               <li><%=sPassword%></li>
               <li><%=sConfermaPassword%></li>
            </ul>
            </div>
         </div>
            <div id="corpoSx">
                <h2 class="centrato">Modifica Profilo Studente</h2>
         <form class="modificaProfilo" id="modificaProfiloStudente" method="post" action="../Studente/modificaProfiloStudente.jsp">
            <fieldset>
               <legend>Modifica Profilo Studente</legend>
               <label for="matricolaStudente">Matricola: </label>
               <input class="testo" type="text" id="matricolaStudente" name="matricolaStudente" disabled="disabled" value="<%= studenteSessione.getMatricola()%>" /><br />
               <label for="nomeStudente">Nome: </label>
               <input class="testo" type="text" id="nomeStudente" name="nomeStudente" disabled="disabled" value="<%= studenteSessione.getNome()%>" /><br />
               <label for="cognomeStudente">Cognome: </label>
               <input class="testo" type="text" id="cognomeStudente" name="cognomeStudente" disabled="disabled" value="<%= studenteSessione.getCognome()%>" /><br />
               <label for="emailStudente">Email: </label>
               <input class="testo" type="text" id="emailStudente" name="emailStudente" value="<%= (datiModificati && !emailValida) ? mail : studenteSessione.getEmail()%>" />
               <span class="reqField">*</span>
               <% if(datiModificati && !emailValida){%>
               <span class="err" id="err_mail">Formato mail non corretto.</span>
               <% }%><br />
               <label for="passwordStudente">Password: </label>
               <input class="testo" type="password" id="passwordStudente" name="passwordStudente" />
               <% if(datiModificati && !pwdValida){%>
               <span class="err" id="err_pwd">La password deve essere lunga almeno 6 caratteri.</span>
               <% }%><br />
               <label for="confPasswordStudente">Conferma Password: </label>
               <input class="testo" type="password" id="confPasswordStudente" name="confPasswordStudente" />
               <% if(datiModificati && !newPwd.equals(confPwd)){%>
               <span class="err" id="err_confpwd">Password e Conferma Password devono coincidere.</span>
               <% }%>
               <br />
               <label for="relatoreStudente">Relatore: </label>
               <input class="testo" type="text" id="relatoreStudente" name="relatoreStudente" disabled="disabled" value="<%= tempProf.getNome() + " " + tempProf.getCognome()%>" /><br />
               <label for="statoTesiStudente">Stato Progetto Tesi: </label>
               <input class="testo" type="text" id="statoTesiStudente" name="statoTesiStudente" disabled="disabled" value="<%= studenteSessione.getStatoProgettoTesi()%>" /><br />
               <label for="titoloTesiStudente">Titolo Tesi: </label>
               <input class="testo" type="text" id="titoloTesiStudente" name="titoloTesiStudente" disabled="disabled" value="<%= studenteSessione.getTitoloTesi()%>" /><br />
               <label for="corsoTesiStudente">Corso Tesi: </label>
               <input class="testo" type="text" id="corsoTesiStudente" name="corsoTesiStudente" disabled="disabled" value="<%= studenteSessione.getCorsoTesi()%>" /><br />
               <label for="tipologiaTesiStudente">Tipologia Tesi: </label>
               <select class="testo" id="tipologiaTesiStudente" name="tipologiaTesiStudente" disabled="disabled" >
                  <option value="<%= Studente.COMPILATIVA%>"
                          <% if(studenteSessione.getTipologiaTesi().equals(Studente.COMPILATIVA)){%>
                          selected="selected"
                          <% }%>
                          ><%= Studente.COMPILATIVA%></option>
                  <option value="<%= Studente.SPERIMENTALE%>"
                          <% if(studenteSessione.getTipologiaTesi().equals(Studente.SPERIMENTALE)){%>
                          selected="selected"
                          <% }%>
                          ><%= Studente.SPERIMENTALE%></option>
               </select><br />
               <label for="tipoLaureaStudente">Tipo Laurea: </label>
               <select class="testo" id="tipoLaureaStudente" name="tipoLaureaStudente" disabled="disabled" >
                  <option value="<%= Studente.TRIENNALE%>"
                          <% if(studenteSessione.getTipoLaurea().equals(Studente.TRIENNALE)){%>
                          selected="selected"
                          <% }%>
                          ><%= Studente.TRIENNALE%></option>
                  <option value="<%= Studente.MAGISTRALE%>"
                          <% if(studenteSessione.getTipoLaurea().equals(Studente.MAGISTRALE)){%>
                          selected="selected"
                          <% }%>
                          ><%= Studente.MAGISTRALE%></option>
               </select><br />
               <input class="submit" type="submit" id="modificaStudente" name="modificaStudente" value="Invia>>" />
               <input type="reset" value="Cancella" id="cancella" />
               
               <br/>
               <span class="reqField">I campi con l'asterisco (*) sono obbligatori.</span>
               
            </fieldset>
         </form>
         </div>
         <% }%>
         
         <hr />
      </div>
      <hr />
      <%@include file="../WEB-INF/jspf/footer.jspf" %>
   </body>
</html>
